// 组合式api
import { computed, ref } from 'vue'
import { useIntervalFn } from '@vueuse/core'
import dayjs from 'dayjs'

export function useCountDown () {
  // 初始值用来保存传入的时间数据
  const time = ref(0)

  // 使用vueUse库的封装函数
  const { pause, resume } = useIntervalFn(() => {
    // 在这里面封住我们的方法
    if (time.value <= 0) {
      // 如果等于0的时候，结束这个回调函数执行，并且使用pause方法停止定时器执行
      return pause()
    } else {
      time.value--
    }
  }, 1000)

  // 处理时间格式
  const formatTime = computed(() => {
    return dayjs.unix(time.value).format('mm分ss秒')
  })

  // 开始函数
  // 开始 初始值放到这里更加灵活 可以不依赖必须在setup中调用  在异步请求之后可以手动调用start开启倒计时
  const start = (currentTime) => {
    // 开始
    // 开始时间应该我们使用时传过来的时间
    time.value = currentTime
    resume()
  }
  // 停止函数
  const stop = () => {
    // 停止
    pause()
  }

  return {
    time, start, stop, formatTime
  }
}
